/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sapra.abc;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.sapra.core.DBManager;
import org.sapra.dao.Colonia;
import org.sapra.dao.Direccion;
import org.sapra.dao.Estado;
import org.sapra.dao.Pais;
import org.sapra.dao.Poblacion;
import org.sapra.dep.conexion.DAC;

/**
 *
 * @author ppratsc
 */
public class dDireccion extends DAC{

    static List<Pais> getPaises() {
        List<Pais> resp = null;
        
        String sql = "SELECT paisId,nombre FROM pais";
        sql += " ORDER BY nombre";
        
        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Pais.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dDireccion.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }
        
        return resp;
    }

    static List<Estado> getEstados(int paisid) {
        List<Estado> resp = null;
        String sql = "SELECT estadoId,nombre FROM estado where fk_paisId = " + paisid;
        sql += " ORDER BY nombre";

        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Estado.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dDireccion.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }

    static List<Poblacion> getPoblaciones(int estadoid) {
        List<Poblacion> resp = null;

        String sql = "SELECT poblacionId,nombre FROM poblacion where fk_estadoId = " + estadoid;
        sql += " ORDER BY nombre";

        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Poblacion.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dDireccion.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }

    static List<Colonia> getColonias(int poblacionid) {
        List<Colonia> resp = null;

        String sql = "SELECT coloniaId,nombre,codigoPostal FROM colonia where fk_poblacionId = " + poblacionid;
        sql += " ORDER BY nombre";

        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Colonia.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dDireccion.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }

    static int addColonia(int poblacionId, String text, String cp) {
        int resp =0;
        String sql = "INSERT INTO colonia(nombre,fk_poblacionid, codigoPostal) VALUES(";
        sql += "'" + text + "'";
        sql += "," + poblacionId +",";
        sql+="'"+cp+"');";
        
         try {
             System.out.println(sql);
            resp = DBManager.Update(sql);
        } catch (Exception ex) {
            Logger.getLogger(dCentroCosto.class.getName()).log(Level.SEVERE, null, ex);
        }

        return resp;
    }

    public static Direccion getDireccion(int id) {
        Direccion resp = null;

        String sql = "SELECT di.direccionId,di.calle,di.numero_exterior,di.numero_interior,di.tipoDeVia,";
        sql += "co.coloniaId,co.nombre as sColonia,co.codigoPostal,es.estadoId,es.nombre as sEstado,";
        sql += "pa.paisId,pa.nombre as sPais,po.poblacionId,po.nombre as sPoblacion";
        sql += " FROM direccion di,colonia co,poblacion po,estado es,pais pa";
        sql += " WHERE di.fk_coloniaId = co.coloniaId AND co.fk_poblacionId = po.poblacionId AND ";
        sql += "po.fk_estadoId = es.estadoId AND es.fk_paisId = pa.paisId AND direccionid = " + id;

         try {
            List<Direccion> dirs = DBManager.getQuery(Direccion.class,sql);
            if(!dirs.isEmpty()) resp = dirs.get(0);
        } catch (Exception ex) {
            Logger.getLogger(dCentroCosto.class.getName()).log(Level.SEVERE, null, ex);
        }

        return resp;
    }


    static int Save(Direccion dir) {
        String sql;
        int resp = -1;
        
        try {
            if(dir.getdireccionId() <= 0){
            // Se agrega una nueva direccion
            try {
            sql = "INSERT INTO direccion(calle,numero_exterior,numero_interior,fk_coloniaId,tipoDeVia)";
            sql += " VALUES(";
            sql += "'" + dir.getcalle() + "',";
            sql += "'" + dir.getnumero_exterior() + "',";
            sql += "'" + dir.getnumero_interior() + "',";
            sql += dir.getcoloniaId() + ",";
            sql += "'CA'";
            sql += ")";
            resp = DBManager.insert(sql);
            } catch (Exception ex) {

                Logger.getLogger(dDireccion.class.getName()).log(Level.SEVERE, null, ex);
            }

            }else {
                resp = -1;
            }
        } catch (Exception e) {
            resp = -1;
        }

        return resp;
    }

    public static int update(Direccion dir){
        String sql="";
        try {
             sql = "UPDATE direccion ";
            sql += "SET calle='"+dir.getcalle()+"' "
                    + ",numero_exterior='"+dir.getnumero_exterior()+"'"
                    + ",numero_interior='"+dir.getnumero_interior()+"'"
                    + ",fk_coloniaId="+dir.getcoloniaId()
                    + ",tipoDeVia='CA'"
                    +" WHERE direccionId="+dir.getdireccionId();
            try {

                DBManager.Update(sql);
            } catch (SQLException ex) {
                Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
                return 1;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return dir.getdireccionId();
        }

        return dir.getdireccionId();
    }

    public static Direccion getDireccion2(int opc){
        Direccion resp = null;

        String sql = "SELECT ";
        sql += "*";
        sql += " FROM ";
        sql += "direccion ";
        sql += " WHERE ";
        sql += "direccionid = " + opc;

        List<Direccion> dirs;
        try {
            DBManager db=new DBManager();
            // Busca el Usuario en Base de Datos
            dirs = db.getQuery(Direccion.class,sql);
            db=null;
            resp=new Direccion();
            resp=dirs.get(0);
        } catch (Exception ex) {
            Logger.getLogger(dDireccion.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }
    
}
